package com.wyp.design.principle.dependencyinversion;

/**
 * @author: yipeng.wang01@hand-china.com-25490
 * @TIME: 2019/12/25/10:36
 **/
public class Oliver {
//    v1
//    public void studyJava() {
//        System.out.println("Oliver study java!");
//    }
//
//    public void studyPython() {
//        System.out.println("Oliver study python!");
//    }

    //    v2 --依赖倒置原则使用传递接口，而不依赖具体实现
//
//    public void study(IStudy study) {
//        study.study();
//    }

    // v3   使用构造方法进行具体实例的注入

    private IStudy study;

    public Oliver(IStudy study) {
        this.study = study;
    }

    public void study() {
        study.study();
    }


//    v4 通过setter方法进行实例注入

    public void setStudy(IStudy study) {
        this.study = study;
    }
}
